<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<!-- 
	Copyright (C) 2007, 2008, 2009, 2010, 2011. PARP Research Group.
	<http://perception.inf.um.es>
	University of Murcia, Spain.

	This file is part of the QVision library.

	QVision is free software: you can redistribute it and/or modify
	it under the terms of the GNU Lesser General Public License as
	published by the Free Software Foundation, version 3 of the License.

	QVision is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU Lesser General Public License for more details.

	You should have received a copy of the GNU Lesser General Public
	License along with QVision. If not, see <http://www.gnu.org/licenses/>.
-->

<html><head><meta http-equiv="content-Type" content="text/html;charset=UTF-8">
<title>QVision: Qt&#39;s Image, Video and Computer Vision Library</title>
<meta name="title" content="QVision" />
<meta name="dc.title" content="QVision" />
<meta name="url" content="http://perception.inf.um.es/QVision" />
<meta name="author" content="PARP Research Group - http://perception.inf.um.es" />
<meta name="revisit-after" content="30 DAYS"/>
<meta name="robots" content="index,follow"/>
<meta name="classification" content="*">
<meta name="rating" content="Safe For Kids">
<meta name="distribution" content="GLOBAL"/>
<meta name="description" content="Qt's Image, Video and Computer Vision Library"/>
<meta name="page-topic" content="Computer Vision research and prototype programming"/>
<meta name="geo.country" content="ES" />

<!--
Keywords:
By license:		open source, gnu, lgpl, gpl, free
By theme:		computer vision, image processing, robotics, programming, source, development
By usage:		library, toolkit, framework, prototype, application
By programming specs:	object oriented, c++, block programming, reusability, gui, graphical, parallel computing, high performance, GPU, prototyping
Interoperability with:	Qt, GSL, GNU Scientific library, OpenCV, CGAL, QWT, CUDA, mplayer, IPP, Intel Image Performance Primitives, blas, lapack
Functionallity:		image features, matrix algebra, projective geometry, mser, function minimization, function optimization, canny operator, harris operator, corner detection, performance evaluation, cpu usage, graphical interface
Main data-types:	matrix, vector, tensor, quaternion, image, polyline
Video sources:		webcam, camera, stream
Devices:		embedded, desktop computer, laptop, mini-laptop
Authors:		PARP research group. University of Murcia, Spain.
-->

<meta name="keywords" content="augmented reality, sfm, structure from motion, open source, gnu, lgpl, gpl, free, computer vision, image processing, robotics, programming, source, development, library, toolkit, framework, prototype, application, object oriented, c++, block programming, reusability, gui, graphical, parallel computing, high performance, GPU, prototyping, Qt, GSL, GNU Scientific library, OpenCV, CGAL, QWT, CUDA, mplayer, IPP, Intel Image Performance Primitives, blas, lapack, image features, matrix algebra, projective geometry, mser, function minimization, function optimization, canny operator, harris operator, corner detection, performance evaluation, cpu usage, graphical interface, matrix, vector, tensor, quaternion, image, polyline, webcam, camera, stream, embedded, desktop computer, laptop, mini-laptop, University of Murcia, Spain, PARP research group, vision por computador"/>
<meta http-equiv="keywords" content="augmented reality, sfm, structure from motion, open source, gnu, lgpl, gpl, free, computer vision, image processing, robotics, programming, source, development, library, toolkit, framework, prototype, application, object oriented, c++, block programming, reusability, gui, graphical, parallel computing, high performance, GPU, prototyping, Qt, GSL, GNU Scientific library, OpenCV, CGAL, QWT, CUDA, mplayer, IPP, Intel Image Performance Primitives, blas, lapack, image features, matrix algebra, projective geometry, mser, function minimization, function optimization, canny operator, harris operator, corner detection, performance evaluation, cpu usage, graphical interface, matrix, vector, tensor, quaternion, image, polyline, webcam, camera, stream, embedded, desktop computer, laptop, mini-laptop, University of Murcia, Spain, PARP research group, vision por computador"/>
<meta http-equiv="pragma" content="no-cache"/>
<meta http-equiv="title" content="QVision"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="tabs.css" rel="stylesheet" type="text/css" />
<link rel="shortcut icon" href="favicon.ico" />
</head><body>

<table width="100%"><tr>
	<td><a href="http://perception.inf.um.es/"><img src="parp.png" border="0" /> <big>PARP Research Group</big></a></td>
	<td align="right"><a href="http://www.um.es/"><big>Universidad de Murcia</big> <img src="um.png" border="0" /></a></td>
</tr></table>

<hr /><br />

<table width="95%" align="center"><tr><td>

<!-- Generated by Doxygen 1.6.3 -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
          <form id="FSearchBox" action="search.php" method="get">
            <img id="MSearchSelect" src="search/search.png" alt=""/>
            <input type="text" id="MSearchField" name="query" value="Search" size="20" accesskey="S" 
                   onfocus="searchBox.OnSearchFieldFocus(true)" 
                   onblur="searchBox.OnSearchFieldFocus(false)"/>
          </form>
        </div>
      </li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
      <li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
    </ul>
  </div>
<h1>src/qvblockprogramming/qvguiblocks/qvparamsinspectorwidget.cpp</h1><a href="qvparamsinspectorwidget_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> *      Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012. PARP Research Group.</span>
<a name="l00003"></a>00003 <span class="comment"> *      &lt;http://perception.inf.um.es&gt;</span>
<a name="l00004"></a>00004 <span class="comment"> *      University of Murcia, Spain.</span>
<a name="l00005"></a>00005 <span class="comment"> *</span>
<a name="l00006"></a>00006 <span class="comment"> *      This file is part of the QVision library.</span>
<a name="l00007"></a>00007 <span class="comment"> *</span>
<a name="l00008"></a>00008 <span class="comment"> *      QVision is free software: you can redistribute it and/or modify</span>
<a name="l00009"></a>00009 <span class="comment"> *      it under the terms of the GNU Lesser General Public License as</span>
<a name="l00010"></a>00010 <span class="comment"> *      published by the Free Software Foundation, version 3 of the License.</span>
<a name="l00011"></a>00011 <span class="comment"> *</span>
<a name="l00012"></a>00012 <span class="comment"> *      QVision is distributed in the hope that it will be useful,</span>
<a name="l00013"></a>00013 <span class="comment"> *      but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="l00014"></a>00014 <span class="comment"> *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span>
<a name="l00015"></a>00015 <span class="comment"> *      GNU Lesser General Public License for more details.</span>
<a name="l00016"></a>00016 <span class="comment"> *</span>
<a name="l00017"></a>00017 <span class="comment"> *      You should have received a copy of the GNU Lesser General Public</span>
<a name="l00018"></a>00018 <span class="comment"> *      License along with QVision. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span>
<a name="l00019"></a>00019 <span class="comment"> */</span>
<a name="l00020"></a>00020 
<a name="l00024"></a>00024 
<a name="l00025"></a>00025 <span class="preprocessor">#include &quot;<a class="code" href="qvparamwidget_8h.html" title="File from the QVision library.">qvparamwidget.h</a>&quot;</span>
<a name="l00026"></a>00026 <span class="preprocessor">#include &quot;<a class="code" href="qvparamsinspectorwidget_8h.html" title="File from the QVision library.">qvparamsinspectorwidget.h</a>&quot;</span>
<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;QLabel&gt;</span>
<a name="l00028"></a>00028 
<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;QVProcessingBlock&gt;</span>
<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;QVIndexedStringList&gt;</span>
<a name="l00031"></a>00031 
<a name="l00032"></a>00032 QVParamsInspectorWidget::QVParamsInspectorWidget(<a class="code" href="classQVPropertyContainer.html" title="Base class for dynamic property container objects.">QVPropertyContainer</a> *holder, QWidget *parent):
<a name="l00033"></a>00033         QWidget(parent), <a class="code" href="classQVPropertyContainer.html" title="Base class for dynamic property container objects.">QVPropertyContainer</a>(<span class="stringliteral">&quot;QVParamsInspectorWidget for &quot;</span> + holder-&gt;getName())
<a name="l00034"></a>00034         {
<a name="l00035"></a>00035         <span class="comment">//setGeometry(QRect(10, 20, 200, 0));</span>
<a name="l00036"></a>00036         inputWidget = <span class="keyword">new</span> QWidget(<span class="keyword">this</span>);
<a name="l00037"></a>00037         outputWidget = <span class="keyword">new</span> QWidget(<span class="keyword">this</span>);
<a name="l00038"></a>00038         inputVboxLayout = <span class="keyword">new</span> QVBoxLayout(inputWidget);
<a name="l00039"></a>00039         outputVboxLayout = <span class="keyword">new</span> QVBoxLayout(outputWidget);
<a name="l00040"></a>00040         inputVboxLayout-&gt;setSpacing(0);
<a name="l00041"></a>00041         outputVboxLayout-&gt;setSpacing(0);
<a name="l00042"></a>00042 
<a name="l00043"></a>00043         tabWidget = <span class="keyword">new</span> QTabWidget(<span class="keyword">this</span>);
<a name="l00044"></a>00044         tabWidget-&gt;addTab(inputWidget, <span class="stringliteral">&quot;input properties&quot;</span>);
<a name="l00045"></a>00045         tabWidget-&gt;addTab(outputWidget, <span class="stringliteral">&quot;output properties&quot;</span>);
<a name="l00046"></a>00046 
<a name="l00047"></a>00047         vboxLayout = <span class="keyword">new</span> QVBoxLayout(<span class="keyword">this</span>);
<a name="l00048"></a>00048         vboxLayout-&gt;setSpacing(0);
<a name="l00049"></a>00049         vboxLayout-&gt;addWidget(tabWidget);
<a name="l00050"></a>00050 
<a name="l00051"></a>00051 
<a name="l00052"></a>00052         <a class="code" href="classQVProcessingBlock.html" title="Base class for Block threads.">QVProcessingBlock</a> *block;
<a name="l00053"></a>00053         <span class="keywordflow">if</span>((block = dynamic_cast&lt;QVProcessingBlock*&gt;(holder)) != NULL)
<a name="l00054"></a>00054                 <span class="keywordflow">foreach</span>(QString property, block-&gt;<a class="code" href="classQVProcessingBlock.html#addab1a41d0a9e7bbdfe47f8b81283ffc" title="Returns the list of triggers (as a QStringList) for the block.">getTriggerList</a>())
<a name="l00055"></a>00055                         inputVboxLayout-&gt;addWidget(<span class="keyword">new</span> QVProcessingBlockTriggerWidget(block, property, <span class="keyword">this</span>));
<a name="l00056"></a>00056 
<a name="l00057"></a>00057         <span class="keywordtype">bool</span> haveInputWidgets = <span class="keyword">false</span>;
<a name="l00058"></a>00058         <span class="keywordtype">bool</span> haveOutputWidgets = <span class="keyword">false</span>;
<a name="l00059"></a>00059         <span class="keywordflow">foreach</span>(QString property, holder-&gt;<a class="code" href="classQVPropertyContainer.html#ad841530f023ade63674be20b9677b3cc" title="Gets list of properties of the QVPropertyContainer.">getPropertyList</a>()) {
<a name="l00060"></a>00060                 <span class="keywordflow">if</span>(not holder-&gt;<a class="code" href="classQVPropertyContainer.html#ab3711d136b3af5497ee180d6a2665844" title="Tells if a property is of the input type and is linked.">isLinkedInput</a>(property) &amp;&amp; holder-&gt;<a class="code" href="classQVPropertyContainer.html#a81d9c28ff7aefe940b058d80a47eb93a" title="Tells if a property is of the input type.">isInput</a>(property) &amp;&amp; not holder-&gt;<a class="code" href="classQVPropertyContainer.html#aec4486b670bdda79321ad447323e3c06" title="Tells if a property can be modified through the GUI.">isGUIInvisible</a>(property)) {
<a name="l00061"></a>00061                         <span class="keywordflow">if</span>(holder-&gt;<a class="code" href="classQVPropertyContainer.html#afdd65a88f713e0031ac4847485acfce4" title="Checks if a property is of a given type.">isType</a>&lt;<span class="keywordtype">int</span>&gt;(property)) <span class="comment">// if the property is int.</span>
<a name="l00062"></a>00062                                 {
<a name="l00063"></a>00063                                 QVSIntParamWidget *int_widget = <span class="keyword">new</span> QVSIntParamWidget(holder,<span class="keyword">this</span>,property);
<a name="l00064"></a>00064                                 inputVboxLayout-&gt;addWidget(int_widget);
<a name="l00065"></a>00065                                 haveInputWidgets = <span class="keyword">true</span>;
<a name="l00066"></a>00066                                 writeOutputProperties();
<a name="l00067"></a>00067                                 connect(int_widget,SIGNAL(valueChanged(<span class="keywordtype">int</span>)),<span class="keyword">this</span>,SLOT(somePropertyChanged()));
<a name="l00068"></a>00068                                 }
<a name="l00069"></a>00069                         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(holder-&gt;<a class="code" href="classQVPropertyContainer.html#afdd65a88f713e0031ac4847485acfce4" title="Checks if a property is of a given type.">isType</a>&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(property)) <span class="comment">// if the property is unsigned int.</span>
<a name="l00070"></a>00070                                 {
<a name="l00071"></a>00071                                 QVUIntParamWidget *int_widget = <span class="keyword">new</span> QVUIntParamWidget(holder,<span class="keyword">this</span>,property);
<a name="l00072"></a>00072                                 inputVboxLayout-&gt;addWidget(int_widget);
<a name="l00073"></a>00073                                 haveInputWidgets = <span class="keyword">true</span>;
<a name="l00074"></a>00074                                 writeOutputProperties();
<a name="l00075"></a>00075                                 connect(int_widget,SIGNAL(valueChanged(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)),<span class="keyword">this</span>,SLOT(somePropertyChanged()));
<a name="l00076"></a>00076                                 }
<a name="l00077"></a>00077                         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(holder-&gt;<a class="code" href="classQVPropertyContainer.html#afdd65a88f713e0031ac4847485acfce4" title="Checks if a property is of a given type.">isType</a>&lt;<span class="keywordtype">char</span>&gt;(property)) <span class="comment">// if the property is unsigned char.</span>
<a name="l00078"></a>00078                                 {
<a name="l00079"></a>00079                                 QVSCharParamWidget *int_widget = <span class="keyword">new</span> QVSCharParamWidget(holder,<span class="keyword">this</span>,property);
<a name="l00080"></a>00080                                 inputVboxLayout-&gt;addWidget(int_widget);
<a name="l00081"></a>00081                                 haveInputWidgets = <span class="keyword">true</span>;
<a name="l00082"></a>00082                                 writeOutputProperties();
<a name="l00083"></a>00083                                 connect(int_widget,SIGNAL(valueChanged(<span class="keywordtype">char</span>)),<span class="keyword">this</span>,SLOT(somePropertyChanged()));
<a name="l00084"></a>00084                                 }
<a name="l00085"></a>00085                         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(holder-&gt;<a class="code" href="classQVPropertyContainer.html#afdd65a88f713e0031ac4847485acfce4" title="Checks if a property is of a given type.">isType</a>&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>&gt;(property)) <span class="comment">// if the property is unsigned char.</span>
<a name="l00086"></a>00086                                 {
<a name="l00087"></a>00087                                 QVUCharParamWidget *int_widget = <span class="keyword">new</span> QVUCharParamWidget(holder,<span class="keyword">this</span>,property);
<a name="l00088"></a>00088                                 inputVboxLayout-&gt;addWidget(int_widget);
<a name="l00089"></a>00089                                 haveInputWidgets = <span class="keyword">true</span>;
<a name="l00090"></a>00090                                 writeOutputProperties();
<a name="l00091"></a>00091                                 connect(int_widget,SIGNAL(valueChanged(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>)),<span class="keyword">this</span>,SLOT(somePropertyChanged()));
<a name="l00092"></a>00092                                 }
<a name="l00093"></a>00093                         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(holder-&gt;<a class="code" href="classQVPropertyContainer.html#afdd65a88f713e0031ac4847485acfce4" title="Checks if a property is of a given type.">isType</a>&lt;<span class="keywordtype">double</span>&gt;(property)) <span class="comment">// if the property is double.</span>
<a name="l00094"></a>00094                                 {
<a name="l00095"></a>00095                                 QVDoubleParamWidget *double_widget = <span class="keyword">new</span> QVDoubleParamWidget(holder,<span class="keyword">this</span>,property);
<a name="l00096"></a>00096                                 inputVboxLayout-&gt;addWidget(double_widget);
<a name="l00097"></a>00097                                 haveInputWidgets = <span class="keyword">true</span>;
<a name="l00098"></a>00098                                 writeOutputProperties();
<a name="l00099"></a>00099                                 connect(double_widget,SIGNAL(valueChanged(<span class="keywordtype">double</span>)),<span class="keyword">this</span>,SLOT(somePropertyChanged()));
<a name="l00100"></a>00100                                 }
<a name="l00101"></a>00101                         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(holder-&gt;<a class="code" href="classQVPropertyContainer.html#afdd65a88f713e0031ac4847485acfce4" title="Checks if a property is of a given type.">isType</a>&lt;<span class="keywordtype">float</span>&gt;(property)) <span class="comment">// if the property is double.</span>
<a name="l00102"></a>00102                                 {
<a name="l00103"></a>00103                                 QVFloatParamWidget *double_widget = <span class="keyword">new</span> QVFloatParamWidget(holder,<span class="keyword">this</span>,property);
<a name="l00104"></a>00104                                 inputVboxLayout-&gt;addWidget(double_widget);
<a name="l00105"></a>00105                                 haveInputWidgets = <span class="keyword">true</span>;
<a name="l00106"></a>00106                                 writeOutputProperties();
<a name="l00107"></a>00107                                 connect(double_widget,SIGNAL(valueChanged(<span class="keywordtype">float</span>)),<span class="keyword">this</span>,SLOT(somePropertyChanged()));
<a name="l00108"></a>00108                                 }
<a name="l00109"></a>00109                         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(holder-&gt;<a class="code" href="classQVPropertyContainer.html#afdd65a88f713e0031ac4847485acfce4" title="Checks if a property is of a given type.">isType</a>&lt;<span class="keywordtype">bool</span>&gt;(property)) <span class="comment">// if the property is bool.</span>
<a name="l00110"></a>00110                                 {
<a name="l00111"></a>00111                                 QVBoolParamWidget *bool_widget = <span class="keyword">new</span> QVBoolParamWidget(holder,<span class="keyword">this</span>,property);
<a name="l00112"></a>00112                                 inputVboxLayout-&gt;addWidget(bool_widget);
<a name="l00113"></a>00113                                 haveInputWidgets = <span class="keyword">true</span>;
<a name="l00114"></a>00114                                 writeOutputProperties();
<a name="l00115"></a>00115                                 connect(bool_widget,SIGNAL(valueChanged(<span class="keywordtype">bool</span>)),<span class="keyword">this</span>,SLOT(somePropertyChanged()));
<a name="l00116"></a>00116                                 }
<a name="l00117"></a>00117                         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(holder-&gt;<a class="code" href="classQVPropertyContainer.html#afdd65a88f713e0031ac4847485acfce4" title="Checks if a property is of a given type.">isType</a>&lt;QString&gt;(property)) <span class="comment">// if the property is QString.</span>
<a name="l00118"></a>00118                                 {
<a name="l00119"></a>00119                                 QVStringParamWidget *st_widget = <span class="keyword">new</span> QVStringParamWidget(holder,<span class="keyword">this</span>,property);
<a name="l00120"></a>00120                                 inputVboxLayout-&gt;addWidget(st_widget);
<a name="l00121"></a>00121                                 haveInputWidgets = <span class="keyword">true</span>;
<a name="l00122"></a>00122                                 writeOutputProperties();
<a name="l00123"></a>00123                                 connect(st_widget,SIGNAL(valueChanged(QString)),<span class="keyword">this</span>,SLOT(somePropertyChanged()));
<a name="l00124"></a>00124                                 }
<a name="l00125"></a>00125                         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(holder-&gt;<a class="code" href="classQVPropertyContainer.html#afdd65a88f713e0031ac4847485acfce4" title="Checks if a property is of a given type.">isType</a>&lt;<a class="code" href="classQVIndexedStringList.html" title="String List with a current string index.">QVIndexedStringList</a>&gt;(property)) <span class="comment">// if the property is QVIndexedStringList.</span>
<a name="l00126"></a>00126                                 {
<a name="l00127"></a>00127                                 QVStringListParamWidget *sl_widget = <span class="keyword">new</span> QVStringListParamWidget(holder,<span class="keyword">this</span>,property);
<a name="l00128"></a>00128                                 inputVboxLayout-&gt;addWidget(sl_widget);
<a name="l00129"></a>00129                                 haveInputWidgets = <span class="keyword">true</span>;
<a name="l00130"></a>00130                                 writeOutputProperties();
<a name="l00131"></a>00131                                 connect(sl_widget,SIGNAL(valueChanged(<a class="code" href="classQVIndexedStringList.html" title="String List with a current string index.">QVIndexedStringList</a>)),<span class="keyword">this</span>,SLOT(somePropertyChanged()));
<a name="l00132"></a>00132                                 }
<a name="l00133"></a>00133                         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(holder-&gt;<a class="code" href="classQVPropertyContainer.html#afdd65a88f713e0031ac4847485acfce4" title="Checks if a property is of a given type.">isType</a>&lt;QColor&gt;(property)) <span class="comment">// if the property is QColor</span>
<a name="l00134"></a>00134                                 {
<a name="l00135"></a>00135                                 QVColorParamWidget *sl_widget = <span class="keyword">new</span> QVColorParamWidget(holder,<span class="keyword">this</span>,property);
<a name="l00136"></a>00136                                 inputVboxLayout-&gt;addWidget(sl_widget);
<a name="l00137"></a>00137                                 haveInputWidgets = <span class="keyword">true</span>;
<a name="l00138"></a>00138                                 writeOutputProperties();
<a name="l00139"></a>00139                                 connect(sl_widget,SIGNAL(valueChanged(QColor)),<span class="keyword">this</span>,SLOT(somePropertyChanged()));
<a name="l00140"></a>00140                                 }
<a name="l00141"></a>00141                         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(holder-&gt;<a class="code" href="classQVPropertyContainer.html#afdd65a88f713e0031ac4847485acfce4" title="Checks if a property is of a given type.">isType</a>&lt;QSize&gt;(property)) <span class="comment">// if the property is QSize</span>
<a name="l00142"></a>00142                                 {
<a name="l00143"></a>00143                                 QVSizeParamWidget *sl_widget = <span class="keyword">new</span> QVSizeParamWidget(holder,<span class="keyword">this</span>,property);
<a name="l00144"></a>00144                                 inputVboxLayout-&gt;addWidget(sl_widget);
<a name="l00145"></a>00145                                 haveInputWidgets = <span class="keyword">true</span>;
<a name="l00146"></a>00146                                 writeOutputProperties();
<a name="l00147"></a>00147                                 connect(sl_widget,SIGNAL(valueChanged(QSize)),<span class="keyword">this</span>,SLOT(somePropertyChanged()));
<a name="l00148"></a>00148                                 }
<a name="l00149"></a>00149                         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(holder-&gt;<a class="code" href="classQVPropertyContainer.html#afdd65a88f713e0031ac4847485acfce4" title="Checks if a property is of a given type.">isType</a>&lt;QPoint&gt;(property)) <span class="comment">// if the property is QPoint</span>
<a name="l00150"></a>00150                                 {
<a name="l00151"></a>00151                                 QVPointParamWidget *sl_widget = <span class="keyword">new</span> QVPointParamWidget(holder,<span class="keyword">this</span>,property);
<a name="l00152"></a>00152                                 inputVboxLayout-&gt;addWidget(sl_widget);
<a name="l00153"></a>00153                                 haveInputWidgets = <span class="keyword">true</span>;
<a name="l00154"></a>00154                                 writeOutputProperties();
<a name="l00155"></a>00155                                 connect(sl_widget,SIGNAL(valueChanged(QPoint)),<span class="keyword">this</span>,SLOT(somePropertyChanged()));
<a name="l00156"></a>00156                                 }
<a name="l00157"></a>00157 <span class="preprocessor">                        #ifdef QVIPP</span>
<a name="l00158"></a>00158 <span class="preprocessor"></span>                        <span class="keywordflow">else</span> <span class="keywordflow">if</span>(holder-&gt;<a class="code" href="classQVPropertyContainer.html#afdd65a88f713e0031ac4847485acfce4" title="Checks if a property is of a given type.">isType</a>&lt;IppiMaskSize&gt;(property)) <span class="comment">// if the property is IppiMaskSize</span>
<a name="l00159"></a>00159                                 {
<a name="l00160"></a>00160                                 QVIppiMaskSizeParamWidget *sl_widget = <span class="keyword">new</span> QVIppiMaskSizeParamWidget(holder,<span class="keyword">this</span>,property);
<a name="l00161"></a>00161                                 inputVboxLayout-&gt;addWidget(sl_widget);
<a name="l00162"></a>00162                                 haveInputWidgets = <span class="keyword">true</span>;
<a name="l00163"></a>00163                                 writeOutputProperties();
<a name="l00164"></a>00164                                 connect(sl_widget,SIGNAL(valueChanged(IppiMaskSize)),<span class="keyword">this</span>,SLOT(somePropertyChanged()));
<a name="l00165"></a>00165                                 }
<a name="l00166"></a>00166                         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(holder-&gt;<a class="code" href="classQVPropertyContainer.html#afdd65a88f713e0031ac4847485acfce4" title="Checks if a property is of a given type.">isType</a>&lt;IppCmpOp&gt;(property)) <span class="comment">// if the property is IppCmpOp</span>
<a name="l00167"></a>00167                                 {
<a name="l00168"></a>00168                                 QVIppCmpOpParamWidget *sl_widget = <span class="keyword">new</span> QVIppCmpOpParamWidget(holder,<span class="keyword">this</span>,property);
<a name="l00169"></a>00169                                 inputVboxLayout-&gt;addWidget(sl_widget);
<a name="l00170"></a>00170                                 haveInputWidgets = <span class="keyword">true</span>;
<a name="l00171"></a>00171                                 writeOutputProperties();
<a name="l00172"></a>00172                                 connect(sl_widget,SIGNAL(valueChanged(IppCmpOp)),<span class="keyword">this</span>,SLOT(somePropertyChanged()));
<a name="l00173"></a>00173                                 }
<a name="l00174"></a>00174                         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(holder-&gt;<a class="code" href="classQVPropertyContainer.html#afdd65a88f713e0031ac4847485acfce4" title="Checks if a property is of a given type.">isType</a>&lt;IppRoundMode&gt;(property)) <span class="comment">// if the property is IppRoundMode</span>
<a name="l00175"></a>00175                                 {
<a name="l00176"></a>00176                                 QVIppRoundModeParamWidget *sl_widget = <span class="keyword">new</span> QVIppRoundModeParamWidget(holder,<span class="keyword">this</span>,property);
<a name="l00177"></a>00177                                 inputVboxLayout-&gt;addWidget(sl_widget);
<a name="l00178"></a>00178                                 haveInputWidgets = <span class="keyword">true</span>;
<a name="l00179"></a>00179                                 writeOutputProperties();
<a name="l00180"></a>00180                                 connect(sl_widget,SIGNAL(valueChanged(IppRoundMode)),<span class="keyword">this</span>,SLOT(somePropertyChanged()));
<a name="l00181"></a>00181                                 }
<a name="l00182"></a>00182 <span class="preprocessor">                        #endif</span>
<a name="l00183"></a>00183 <span class="preprocessor"></span>                }
<a name="l00184"></a>00184                 <span class="keywordflow">else</span> <span class="keywordflow">if</span>(not holder-&gt;<a class="code" href="classQVPropertyContainer.html#ad16cc60565b7e43255149a53e44bce3a" title="Tells if a property is of the output type and is linked.">isLinkedOutput</a>(property) &amp;&amp; holder-&gt;<a class="code" href="classQVPropertyContainer.html#aa6edef6dbc24d47a88ebe7768eb0bbf0" title="Tells if a property is of the output type.">isOutput</a>(property) &amp;&amp; not holder-&gt;<a class="code" href="classQVPropertyContainer.html#aec4486b670bdda79321ad447323e3c06" title="Tells if a property can be modified through the GUI.">isGUIInvisible</a>(property)) {
<a name="l00185"></a>00185                         <span class="keywordflow">if</span>(holder-&gt;<a class="code" href="classQVPropertyContainer.html#afdd65a88f713e0031ac4847485acfce4" title="Checks if a property is of a given type.">isType</a>&lt;<span class="keywordtype">int</span>&gt;(property)) <span class="comment">// if the property is int.</span>
<a name="l00186"></a>00186                                 {
<a name="l00187"></a>00187                                 <a class="code" href="classQVProcessingBlock.html" title="Base class for Block threads.">QVProcessingBlock</a>* block;
<a name="l00188"></a>00188                                 <span class="keywordflow">if</span>((block = dynamic_cast&lt;QVProcessingBlock*&gt;(holder)) != NULL) {
<a name="l00189"></a>00189                                         QVOutputIntParamWidget *int_widget = <span class="keyword">new</span> QVOutputIntParamWidget(block,<span class="keyword">this</span>,property);
<a name="l00190"></a>00190                                         outputVboxLayout-&gt;addWidget(int_widget);
<a name="l00191"></a>00191                                         haveOutputWidgets = <span class="keyword">true</span>;
<a name="l00192"></a>00192                                         connect(block,SIGNAL(endIteration(uint, <span class="keywordtype">int</span>)),<span class="keyword">this</span>,SLOT(somePropertyUpdate()));
<a name="l00193"></a>00193                                         connect(block,SIGNAL(endIteration(uint, <span class="keywordtype">int</span>)),int_widget,SLOT(update()));
<a name="l00194"></a>00194                                         }
<a name="l00195"></a>00195                                 }
<a name="l00196"></a>00196                         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(holder-&gt;<a class="code" href="classQVPropertyContainer.html#afdd65a88f713e0031ac4847485acfce4" title="Checks if a property is of a given type.">isType</a>&lt;<span class="keywordtype">double</span>&gt;(property)) <span class="comment">// if the property is double.</span>
<a name="l00197"></a>00197                                 {
<a name="l00198"></a>00198                                 <a class="code" href="classQVProcessingBlock.html" title="Base class for Block threads.">QVProcessingBlock</a>* block;
<a name="l00199"></a>00199                                 <span class="keywordflow">if</span>((block = dynamic_cast&lt;QVProcessingBlock*&gt;(holder)) != NULL) {
<a name="l00200"></a>00200                                         QVOutputDoubleParamWidget *double_widget = <span class="keyword">new</span> QVOutputDoubleParamWidget(block,<span class="keyword">this</span>,property);
<a name="l00201"></a>00201                                         outputVboxLayout-&gt;addWidget(double_widget);
<a name="l00202"></a>00202                                         haveOutputWidgets = <span class="keyword">true</span>;
<a name="l00203"></a>00203                                         connect(block,SIGNAL(endIteration(uint, <span class="keywordtype">int</span>)),<span class="keyword">this</span>,SLOT(somePropertyUpdate()));
<a name="l00204"></a>00204                                         connect(block,SIGNAL(endIteration(uint, <span class="keywordtype">int</span>)),double_widget,SLOT(update()));
<a name="l00205"></a>00205                                         }
<a name="l00206"></a>00206                                 }
<a name="l00207"></a>00207                         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(holder-&gt;<a class="code" href="classQVPropertyContainer.html#afdd65a88f713e0031ac4847485acfce4" title="Checks if a property is of a given type.">isType</a>&lt;<span class="keywordtype">bool</span>&gt;(property)) <span class="comment">// if the property is bool.</span>
<a name="l00208"></a>00208                                 {
<a name="l00209"></a>00209                                 <a class="code" href="classQVProcessingBlock.html" title="Base class for Block threads.">QVProcessingBlock</a>* block;
<a name="l00210"></a>00210                                 <span class="keywordflow">if</span>((block = dynamic_cast&lt;QVProcessingBlock*&gt;(holder)) != NULL) {
<a name="l00211"></a>00211                                         QVOutputBoolParamWidget *bool_widget = <span class="keyword">new</span> QVOutputBoolParamWidget(block,<span class="keyword">this</span>,property);
<a name="l00212"></a>00212                                         outputVboxLayout-&gt;addWidget(bool_widget);
<a name="l00213"></a>00213                                         haveOutputWidgets = <span class="keyword">true</span>;
<a name="l00214"></a>00214                                         connect(block,SIGNAL(endIteration(uint, <span class="keywordtype">int</span>)),<span class="keyword">this</span>,SLOT(somePropertyUpdate()));
<a name="l00215"></a>00215                                         connect(block,SIGNAL(endIteration(uint, <span class="keywordtype">int</span>)),bool_widget,SLOT(update()));
<a name="l00216"></a>00216                                         }
<a name="l00217"></a>00217                                 }
<a name="l00218"></a>00218                         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(holder-&gt;<a class="code" href="classQVPropertyContainer.html#afdd65a88f713e0031ac4847485acfce4" title="Checks if a property is of a given type.">isType</a>&lt;QString&gt;(property)) <span class="comment">// if the property is QString.</span>
<a name="l00219"></a>00219                                 {
<a name="l00220"></a>00220                                 <a class="code" href="classQVProcessingBlock.html" title="Base class for Block threads.">QVProcessingBlock</a>* block;
<a name="l00221"></a>00221                                 <span class="keywordflow">if</span>((block = dynamic_cast&lt;QVProcessingBlock*&gt;(holder)) != NULL) {
<a name="l00222"></a>00222                                         QVOutputStringParamWidget *st_widget = <span class="keyword">new</span> QVOutputStringParamWidget(block,<span class="keyword">this</span>,property);
<a name="l00223"></a>00223                                         outputVboxLayout-&gt;addWidget(st_widget);
<a name="l00224"></a>00224                                         haveOutputWidgets = <span class="keyword">true</span>;
<a name="l00225"></a>00225                                         connect(block,SIGNAL(endIteration(uint, <span class="keywordtype">int</span>)),<span class="keyword">this</span>,SLOT(somePropertyUpdate()));
<a name="l00226"></a>00226                                         connect(block,SIGNAL(endIteration(uint, <span class="keywordtype">int</span>)),st_widget,SLOT(update()));
<a name="l00227"></a>00227                                         }
<a name="l00228"></a>00228                                 }
<a name="l00229"></a>00229                         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(holder-&gt;<a class="code" href="classQVPropertyContainer.html#afdd65a88f713e0031ac4847485acfce4" title="Checks if a property is of a given type.">isType</a>&lt;<a class="code" href="classQVIndexedStringList.html" title="String List with a current string index.">QVIndexedStringList</a>&gt;(property)) <span class="comment">// if the property is QVIndexedStringList.</span>
<a name="l00230"></a>00230                                 {
<a name="l00231"></a>00231                                 <a class="code" href="classQVProcessingBlock.html" title="Base class for Block threads.">QVProcessingBlock</a>* block;
<a name="l00232"></a>00232                                 <span class="keywordflow">if</span>((block = dynamic_cast&lt;QVProcessingBlock*&gt;(holder)) != NULL) {
<a name="l00233"></a>00233                                         QVOutputStringListParamWidget *sl_widget = <span class="keyword">new</span> QVOutputStringListParamWidget(block,<span class="keyword">this</span>,property);
<a name="l00234"></a>00234                                         outputVboxLayout-&gt;addWidget(sl_widget);
<a name="l00235"></a>00235                                         haveOutputWidgets = <span class="keyword">true</span>;
<a name="l00236"></a>00236                                         connect(block,SIGNAL(endIteration(uint, <span class="keywordtype">int</span>)),<span class="keyword">this</span>,SLOT(somePropertyUpdate()));
<a name="l00237"></a>00237                                         connect(block,SIGNAL(endIteration(uint, <span class="keywordtype">int</span>)),sl_widget,SLOT(update()));
<a name="l00238"></a>00238                                         }
<a name="l00239"></a>00239                                 }
<a name="l00240"></a>00240                         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(holder-&gt;<a class="code" href="classQVPropertyContainer.html#afdd65a88f713e0031ac4847485acfce4" title="Checks if a property is of a given type.">isType</a>&lt;QColor&gt;(property)) <span class="comment">// if the property is QColor</span>
<a name="l00241"></a>00241                                 {
<a name="l00242"></a>00242                                 <a class="code" href="classQVProcessingBlock.html" title="Base class for Block threads.">QVProcessingBlock</a>* block;
<a name="l00243"></a>00243                                 <span class="keywordflow">if</span>((block = dynamic_cast&lt;QVProcessingBlock*&gt;(holder)) != NULL) {
<a name="l00244"></a>00244                                         QVOutputColorParamWidget *sl_widget = <span class="keyword">new</span> QVOutputColorParamWidget(block,<span class="keyword">this</span>,property);
<a name="l00245"></a>00245                                         outputVboxLayout-&gt;addWidget(sl_widget);
<a name="l00246"></a>00246                                         haveOutputWidgets = <span class="keyword">true</span>;
<a name="l00247"></a>00247                                         connect(block,SIGNAL(endIteration(uint, <span class="keywordtype">int</span>)),<span class="keyword">this</span>,SLOT(somePropertyUpdate()));
<a name="l00248"></a>00248                                         connect(block,SIGNAL(endIteration(uint, <span class="keywordtype">int</span>)),sl_widget,SLOT(update()));
<a name="l00249"></a>00249                                         }
<a name="l00250"></a>00250                                 }
<a name="l00251"></a>00251                 }
<a name="l00252"></a>00252         }
<a name="l00253"></a>00253 
<a name="l00254"></a>00254         <span class="keywordflow">if</span> (!haveInputWidgets) inputVboxLayout-&gt;addWidget(<span class="keyword">new</span> QLabel(<span class="stringliteral">&quot;\n\tThis container has no\n\teditable input properties.&quot;</span>));
<a name="l00255"></a>00255         <span class="keywordflow">if</span> (!haveOutputWidgets) outputVboxLayout-&gt;addWidget(<span class="keyword">new</span> QLabel(<span class="stringliteral">&quot;\n\tThis container has no\n\tvisible output properties.&quot;</span>));
<a name="l00256"></a>00256 
<a name="l00257"></a>00257         inputVboxLayout-&gt;addStretch();
<a name="l00258"></a>00258         }
<a name="l00259"></a>00259 
<a name="l00260"></a>00260 <span class="keywordtype">void</span> QVParamsInspectorWidget::somePropertyChanged()
<a name="l00261"></a>00261         {
<a name="l00262"></a>00262         writeOutputProperties();
<a name="l00263"></a>00263         }
<a name="l00264"></a>00264 
<a name="l00265"></a>00265 <span class="keywordtype">void</span> QVParamsInspectorWidget::somePropertyUpdate()
<a name="l00266"></a>00266         {
<a name="l00267"></a>00267         readInputProperties();
<a name="l00268"></a>00268         }
</pre></div></div>
</td></tr></table>

<br /><hr><br />
<center><a href="http://perception.inf.um.es/QVision">QVision framework</a>.
<a href="http://perception.inf.um.es">PARP research group</a>.
Copyright &copy; 2007, 2008, 2009, 2010, 2011.</center>
<br />
</body>
</html>
